Merge "Avoid invidual LinkCache lookups in Linker::makeBrokenImageLinkObj()"
[lhc/web/wiklou.git] / includes / Linker.php
index b81218f..f4131ed 100644 (file)
@@ -269,7 +269,7 @@ class Linker {
         */
        public static function linkKnown(
                $target, $html = null, $customAttribs = [],
-               $query = [], $options = [ 'known', 'noclasses' ]
+               $query = [], $options = [ 'known' ]
        ) {
                return self::link( $target, $html, $customAttribs, $query, $options );
        }
@@ -940,7 +940,15 @@ class Linker {
                        $redir = RepoGroup::singleton()->getLocalRepo()->checkRedirect( $title );
 
                        if ( $redir ) {
-                               return self::linkKnown( $title, $encLabel, [], wfCgiToArray( $query ) );
+                               // We already know it's a redirect, so mark it
+                               // accordingly
+                               return self::link(
+                                       $title,
+                                       $encLabel,
+                                       [ 'class' => 'mw-redirect' ],
+                                       wfCgiToArray( $query ),
+                                       [ 'known', 'noclasses' ]
+                               );
                        }
 
                        $href = self::getUploadUrl( $title, $query );
@@ -950,7 +958,7 @@ class Linker {
                                $encLabel . '</a>';
                }
 
-               return self::linkKnown( $title, $encLabel, [], wfCgiToArray( $query ) );
+               return self::link( $title, $encLabel, [], wfCgiToArray( $query ), [ 'known', 'noclasses' ] );
        }
 
        /**
@@ -1084,7 +1092,16 @@ class Linker {
                if ( !$title ) {
                        $title = $wgTitle;
                }
-               $attribs['rel'] = Parser::getExternalLinkRel( $url, $title );
+               $newRel = Parser::getExternalLinkRel( $url, $title );
+               if ( !isset( $attribs['rel'] ) || $attribs['rel'] === '' ) {
+                       $attribs['rel'] = $newRel;
+               } elseif ( $newRel !== '' ) {
+                       // Merge the rel attributes.
+                       $newRels = explode( ' ', $newRel );
+                       $oldRels = explode( ' ', $attribs['rel'] );
+                       $combined = array_unique( array_merge( $newRels, $oldRels ) );
+                       $attribs['rel'] = implode( ' ', $combined );
+               }
                $link = '';
                $success = Hooks::run( 'LinkerMakeExternalLink',
                        [ &$url, &$text, &$link, &$attribs, $linktype ] );